package main

import (
	"context"
	"fmt"

	"github.com/aws/aws-lambda-go/lambda"
)

type MyEvent struct {
	Name    string `json:"Name"`
	Age     int    `json:"Age"`
	Address string `json:"addr"` //addr小写也是可以的
}

type MyResponse struct {
	Message string `json:"Msg"`
}

//处理事件。这个函数返回两个值。第一个值的类型可以自义定。第二个必须是error类型。
//接收的第一个参数：当aws的lambda调用function时，会传一个对象：context对象。它里面包含了一些调用时的属性和方法，比如函数名,内存分配,超时时间等等.
//在本例中 ctx 没有啥用，因为请求参数全在 MyEvent中
func HandleRequest(ctx context.Context, e MyEvent) (MyResponse, error) {
	re := MyResponse{Message: fmt.Sprintf("Hello %s!You are %d years old. You live in %s", e.Name, e.Age, e.Address)}

	//第二个参数返回 nil 表示执行成功，没有错误
	return re, nil
}

func main() {
	//执行lambda程序
	lambda.Start(HandleRequest)
}
